<!--
 * @Description: 事件流
 * @Author: rendc
 * @Date: 2025-11-04 09:29:38
 * @LastEditors: rendc
 * @LastEditTime: 2025-11-04 10:25:14
-->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>事件流</title>
  <style>
    .outer,.middle,.inner{
      border: 1px solid white;
      border-radius: 50%;
    }
    .outer{
      width: 200px;
      height: 200px;
      background-color: #8de80d95;
    }
    .middle{
      margin: 25px;
      width: 150px;
      height: 150px;
      background-color: #05dcf079;
    }
    .inner{
      margin: 25px;
      width: 100px;
      height: 100px;
      background-color: #e25dca86;
    }
  </style>
</head>
<body>
  <!-- 事件的三要素 -->
  <!-- 事件源 div*3 -->
  <!-- 事件类型 click -->
  <!-- 事件处理程序 clickXxx() -->
  <!-- 执行事件的步骤 -->
  <!-- 1. 获取事件源 -->
  <!-- 2. 注册事件(绑定事件) -->
  <!-- 3. 添加事件处理程序 -->
  <!-- <div class="outer" id="outer"> -->
  <div class="outer" onclick="clickOuter()">
    <!-- 外 -->
    <div class="middle" onclick="clickMiddle('hello',event)">
      <!-- 中 -->
      <!-- 事件对象event需要调用方法时传递 -->
      <div class="inner" 
      onclick="clickInner(event)">
        <!-- 内 -->
      </div>
    </div>
  </div>
  <script>
    // 1. 获取事件源
    var divOuter = document.getElementById("outer");
    // 2. 注册事件(绑定事件)
    // clickOuter 函数引用
    // clickOuter() 函数执行的返回值
    divOuter.onclick = clickOuter;
    // divOuter.onclick = function() {
    //   console.log('🤡 CC - clickOuter:');
    // };
    // 3. 添加事件处理程序
    function clickOuter() {
      console.log('🤡 CC - clickOuter:');
    }
    function clickMiddle(str,event) {
      console.log('🤡 CC - clickMiddle - str:', str);
      console.log('🤡 CC - clickMiddle:');
      // 阻止事件冒泡
      event.stopPropagation();
    }
    function clickInner(event) {
      console.log('🤡 CC - clickInner - event:', event);
      // console.log('🤡 CC - clickInner:');
      // 阻止事件冒泡
      event.stopPropagation();
      // window
      // console.log('🤡 CC - clickInner - window:', window);
      // this 
      // 全局变量
      // alert();
    }
  </script>
</body>
</html>